home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Libraries / Sherlock 2.0 / Sherlock_DevLib / sl2.h < prev   
Text File  |  1996-04-06  |  4KB  |  148 lines

  1. /*
  2.     Sherlock internal header.
  3.  
  4.     Used for communication between the various Sherlock routines.
  5.     Do *not* include this file in your source files!
  6.  
  7.     source:  Lsl2.h
  8.     started: November 4, 1993.
  9.     version:
  10.         March 14, 1996.
  11.             Added SL_USE_MICROSECONDS constant
  12.             Added support for Metrowerks C.
  13.         February 5, 1996.
  14.             Added support for Symantec C.
  15.             Added prototype for sl_ticks for Symantec C and Think C.
  16.         September 25, 1995.
  17.             Added support for Code Warrior.
  18.             Protected the definitions of the TRUE and FALSE constants.
  19.         January 7, 1994.
  20. */
  21.  
  22. /*
  23.     Make sure this file is included only once.
  24. */
  25. #ifndef SHERLOCK_H2_
  26. #define SHERLOCK_H2_
  27.  
  28. #pragma once
  29.  
  30. /*
  31.     Set SL_ENV_MAC to 1 if we are running on a Macintosh.
  32. */
  33.  
  34. #if defined(THINK_C) || defined(SYMANTEC_C) || defined(applec) || defined(__MWERKS__)
  35.     #define SL_ENV_MAC 1
  36. #else
  37.     #define SL_ENV_MAC 0
  38. #endif
  39.  
  40.  
  41. /*
  42.     Time related stuff:
  43.  
  44.     Define SL_USE_MICROSECONDS is we will be using the
  45.     Apple Toolbox 'Microseconds'.
  46.     It is no longer possible to use the VIA timer code with Think C
  47.     because the Think C compiler could, in fact, be running on a PowerPc.
  48. */
  49.  
  50. #if defined(THINK_C) || defined(SYMANTEC_C) || defined(applec) || defined(__MWERKS__)
  51.     #define SL_USE_MICROSECONDS
  52.     #include <Timer.h>
  53.     #define sl_ticks() 0
  54. #else
  55.     #undef SL_USE_MICROSECONDS
  56.     #if defined(TUPLE_C)
  57.         long _Ticks(void);
  58.         #define sl_ticks() _Ticks()            /* Tuple VIA timer. */
  59.     #elif defined(applec)
  60.         #define sl_ticks() 0                /* Disable the timer logic. */
  61.     #else
  62.         #define sl_ticks() sl_count
  63.     #endif
  64. #endif
  65.  
  66. /*
  67.     Define the stack used to keep track of nesting of Sherlock macros.
  68. */
  69. typedef struct sl_stack_struct sl_snode;
  70.  
  71. struct sl_stack_struct {
  72.     sl_node *    node;        /* Pointer to statistic node.    */
  73.     long        overstart;    /* Starting ticks for overhead.    */
  74.     long        start;        /* Starting ticks.                */
  75.     #ifdef SL_USE_MICROSECONDS
  76.         UnsignedWide wide_start;
  77.     #endif
  78.     long        overhead;    /* Inner overhead.                */
  79. };
  80.  
  81. /*
  82.     Define the sizes of the Sherlock tables.
  83. */
  84. #define SL_MAX_STACK    100        /* Max stack level.        */
  85. #define SL_MAX_HASH        241        /* Size of hash table.    */
  86. #define SL_MAX_NODES    500        /* Max number of nodes.    */
  87. #define SL_MAX_OUT_LINE    200        /* Size of sl_buf_.        */
  88.  
  89. /*
  90.     Define variable global to the various files.
  91.  
  92.     These variables should *not* be used outside the Sherlock files.
  93. */
  94. extern sl_snode *    sl_stack;        /* Sherlock stack. */
  95. extern int            sl_level;        /* Stack pointer. */
  96. extern int            sl_lmax;        /* Max stack pointer. */
  97. extern sl_node **    sl_htab;        /* Sherlock hash table. */
  98. extern sl_node *     sl_wcard;         /* Head of wildcard list. */
  99. extern char    *         sl_cname;        /* Check name of current macro. */
  100. extern bool            sl_troff;        /* TRUE: all tracing disabled. */
  101. extern bool            sl_nodots;        /* TRUE: no level dots. */
  102. extern bool            sl_warning;        /* TRUE: negative time warning. */
  103. extern bool            sl_full_trace;    /* TRUE: make STATB the same as TICKB. */
  104. extern long            sl_neg_count;    /* Count of negative times. */
  105. extern int            sl_node_count;    /* Allocated nodes. */
  106.  
  107. /*
  108.     Define simple constants.
  109. */
  110. #ifndef TRUE
  111.     #define TRUE 1
  112. #endif
  113.  
  114. #ifndef FALSE
  115.     #define FALSE 0
  116. #endif
  117.  
  118. /*
  119.     Define the number of beeps signaled by sl_abort.
  120. */
  121. #define SL_ABORT_COUT    1
  122. #define SL_ABORT_FIND    2
  123. #define SL_ABORT_INIT    3
  124. #define SL_ABORT_NEW    4
  125. #define SL_ABORT_OVB    5
  126. #define SL_ABORT_OVX    6
  127.  
  128. /*
  129.     Function prototypes for private routines.
  130.  
  131.     None of these routines should be called from the user program.
  132. */
  133.  
  134.     /* sl_init.c */
  135.  
  136. void        sl_go        (void);
  137. sl_node *    sl_new        (char *s);
  138.  
  139.     /* sl_util.c */
  140.  
  141. void        sl_abort    (int beeps);
  142. void        sl_check    (char *s);
  143. void        sl_dots        (int n);
  144. void        sl_exit        (void);
  145. sl_node *    sl_find        (char *, char *);
  146.  
  147. #endif /* SHERLOCK_H2_ */
  148.